package co.com.travelsoft.ati.entities;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

import co.com.travelsoft.ati.dto.CiudadDto;
import co.com.travelsoft.ati.dto.PaisDto;

@Entity
@NamedQueries( { @NamedQuery(name = "Ciudades.findAll", query = "select o from Ciudades o") })
public class Ciudades implements Serializable{
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Id
    @Column(nullable = true)
    private BigDecimal codigo;
    @Column(nullable = false, unique = true, length = 64)
    private String nombre;
    @ManyToOne
    @JoinColumn(name = "CODIGOPAIS")
    private Paises paises;

    @Column(nullable = true)
    private BigDecimal codigopais;
        
    public BigDecimal getCodigopais() {
		return codigopais;
	}

	public void setCodigopais(BigDecimal codigopais) {
		this.codigopais = codigopais;
	}

	public Ciudades() {
    }

    public Ciudades(BigDecimal codigo, Paises paises, String nombre, BigDecimal codigopais) {
        this.codigo = codigo;
        this.paises = paises;
        this.nombre = nombre;
        this.codigopais = codigopais;
    }
    
    
    public Ciudades(CiudadDto ciudadDto) {
        this.setCodigo(ciudadDto.getCodigo());
        this.setPaises(obtenerPais(ciudadDto.getPaises()));
        this.setNombre(ciudadDto.getNombre());
        this.setCodigopais(ciudadDto.getCodigopais());
    }

	private Paises obtenerPais(PaisDto paises) {
		Paises pais = new Paises();
		pais.setCodigo(paises.getCodigo());
		pais.setNombre(paises.getNombre());
		return pais;
	}


    /* (non-Javadoc)
	 * @see co.com.travelsoft.ati.entities.Ciudad#getCodigo()
	 */
    
	public BigDecimal getCodigo() {
        return codigo;
    }

    /* (non-Javadoc)
	 * @see co.com.travelsoft.ati.entities.Ciudad#setCodigo(java.math.BigDecimal)
	 */
    
	public void setCodigo(BigDecimal codigo) {
        this.codigo = codigo;
    }


    /* (non-Javadoc)
	 * @see co.com.travelsoft.ati.entities.Ciudad#getNombre()
	 */
    
	public String getNombre() {
        return nombre;
    }

    /* (non-Javadoc)
	 * @see co.com.travelsoft.ati.entities.Ciudad#setNombre(java.lang.String)
	 */
    
	public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /* (non-Javadoc)
	 * @see co.com.travelsoft.ati.entities.Ciudad#getPaises()
	 */
    
	public Paises getPaises() {
        return paises;
    }

    /* (non-Javadoc)
	 * @see co.com.travelsoft.ati.entities.Ciudad#setPaises(co.com.travelsoft.ati.iterfaces.entities.Pais)
	 */
    
	public void setPaises(Paises paises) {
        this.paises = paises;
    }

    /* (non-Javadoc)
	 * @see co.com.travelsoft.ati.entities.Ciudad#toString()
	 */
    
    public String toString() {
        StringBuffer buffer = new StringBuffer();
        buffer.append(getClass().getName()+"@"+Integer.toHexString(hashCode()));
        buffer.append('[');
        buffer.append("codigo=");
        buffer.append(getCodigo());
        buffer.append(',');
        buffer.append("nombre=");
        buffer.append(getNombre());
        buffer.append(',');
        buffer.append("codigopais=");
        buffer.append(getCodigopais());
        buffer.append(',');
        buffer.append(']');
        return buffer.toString();
    }
}
